In data processing systems, data typically needs to be exchanged between different components, e.g. different processors (e.g. between a central processing unit, CPU, and a co-processor) or also between different processes running on the same processor.
Data may be exchanged between different entities (which may include software processes executed by a processor or hardware components such as a co-processor) by means of writing the data to be exchanged to a memory which may be accessed by all of the entities, i.e. a shared memory.
In such a scenario, mechanisms have typically to be provided for ensuring synchronized access of the data and avoiding data corruption, which may, for example, arise if one entity accesses the shared memory before another entity has finished its access to the shared memory.
Accordingly, mechanisms for controlling access to a memory (e.g. a shared memory used for data exchange) that provide efficient access, e.g. allow fast exchange of data by means of the memory, are desirable.